// 引入操作t_admin表的db模块
let db = require("../db/admin.js");

let util = require("../../util.js");

/**
 * 
 * @param {Object} data 请求参数
 * @param {Function} callback 回调函数 
 */
exports.adminLogin = async function (data, callback) {
    console.log("login.adminLogin.data = ", data);
    let returnData = {};
    let result = await db.login(data);
    // 查询失败（返回null或者没有查询到数据都为失败）
    if (result == null || result.length == 0) {
        returnData = {
            status: -1,
            msg: "用户名或密码错误",
        };
        callback(returnData);
        return;
    }
    // 登录成功
    // 当前登录用户
    let loginAdmin = result[0];
    util.saveUser(loginAdmin);
    // 查询管理员的所有模块
    let funList = await db.queryModels(loginAdmin);
    // 所有url的字符串集合
    let funSet = new Set();

    for (let v of funList) {
        // 查询当前管理员，该模块下的所有权限
        let subList = await db.queryFuns({ t_admin_pk: loginAdmin.t_admin_pk, model_pk: v.model_pk });
        v.subList = subList;
        subList.forEach(v => {
            let arr = v.url.split(",");
            arr.forEach(a => funSet.add(a));
        })
    };
    loginAdmin.funSet = Array.from(funSet);
    loginAdmin.funList = funList;
    returnData = {
        status: 1,
        msg: "登录成功",
        // 数组长度只有1，直接把第一个元素做为结果返回
        result_data: loginAdmin
    }
    callback(returnData);
}

exports.adminLogout = function (data, callback) {
    util.removeUser(data.token);
    callback({ status: 1, msg: "登出成功" });
}